/**
 * Status.h
 *
 * @author Bematech S.A.
 */
#ifndef __BILBAO_UTIL_STATUS_CLASS_H__
#define __BILBAO_UTIL_STATUS_CLASS_H__

#include "bilbao/types.h"
#include "bilbao/Config.h"
#include "bilbao/util/Timing.h"

/**
 * Classe utilit�ria respons�vel por verificar o status operacional do
 * equipamento/software SAT, o que � tipicamente feito em decorr�ncia de uma
 * requisi��o do PAF atrav�s de um comando espec�fico recebido via comunica��o
 * serial.
 * 
 * @see SerialCommunication
 */
namespace bilbao
{
	namespace util
	{
		typedef struct _StatusData {
			String NSERIE;
			//Dados da rede - Inicio
			String TIPO_LAN;
			String LAN_IP;
			String LAN_MAC;
			String LAN_MASK;
			String LAN_GW;
			String LAN_DNS_1;
			String LAN_DNS_2;
			String STATUS_LAN;
			//Dados da rede - Fim
			String NIVEL_BATERIA;
			//
			String MT_TOTAL;
			String MT_USADA;
			//
			String DH_ATUAL;
			String VER_SB;
			String VER_LAYOUT;
			String ULTIMO_CFE;
			String LISTA_INICIAL;
			String LISTA_FINAL;
			String DH_CFE;
			String DH_ULTIMA;
			//
			String CERT_EMISSAO;
			String CERT_VENCIMENTO;
			//
			String ESTADO_OPERACAO;

			//TODO: terminar método
			_StatusData()
			{

			}
		} StatusData;


		class Status
		{

		public:
			/**
			 *
			 */
			Status(void);

			/**
			 *
			 */
			virtual ~Status(void);

			//TODO: traduzir
			/**
			 * Coleta as informação de:
			 *   TODO:<Amanda>
			 *   Listar todas aquelas informações sobre o status do equipamento
			 *   que estão em uma tabela.
			 *   - Atributo 1
			 *   - Atributo 2
			 *   ...
			 *   - Atributo N
			 *   </Amanda>
			 *
			 * Essas informações são estruturadas de acordo com a estrutura do protocolo.
			 * Cada informação é separada por "|"(pipe) e caso essa informação não seja
			 * localizada irá um TODO:<Amanda>Fala um pouco sobre isso.</Amanda>
			 *
			 * É passado a referência de uma <b>String</b> para receber os status
			 * do equipamento.
			 *
			 * @param ret - É utilizado para retornar os status do equipamento.
			 */
			StatusData queryEquipmentStatus(void);
			String queryProcessingState(void);
		};
	}
}
#endif //__BILBAO_UTIL_STATUS_CLASS_H__
